
package TokensDelLenguaje;

import PolacaInversa.Registro;
import java.util.ArrayList;

public abstract class Token_Operador extends Token{
    
    public Token_Operador(Tokens t){
        super(t);
    }
    
    public ArrayList conversionImplicita(Token operando1, Token operando2, Registro reg) {
        ArrayList list = new ArrayList();
        String s = "";
        Tokens op1 = operando1.getId();
        Tokens op2 = operando2.getId();
        //La logica de la tabla de conversion para este operador
        if (op1 == Tokens.const_uinteger && op1 == Tokens.const_uinteger) {
            list.add(s);
        }
            else if (op1 == Tokens.const_ulongint && op2 == Tokens.const_ulongint) {
                list.add(s);
            }
                else if (op1 == Tokens.const_uinteger && op2 == Tokens.const_ulongint) {
                    //Generar Assembler.
                    s = conversion(operando1,reg);
                    list.add(s);
                }
                    else if (op1 == Tokens.const_ulongint && op2 == Tokens.const_uinteger) {
                        //Generar Assembler.
                        s = conversion(operando2,reg);
                        list.add(s);
                    }
        list.add(0, true);
        return list;
    }
    
    protected String conversion(Token op, Registro reg) {
        //Generar Assembler.
        String s = "";
        return ((Token_Dato)op).conversion(reg);
    }
    
    public ArrayList traducir_assembler(Token o1, Token o2, Registro reg){
        return this.conversionImplicita(o1,o2,reg);
    }

    @Override
    public String toString() {
        return "[" + super.toString() + "]";
    }
    
    
}
